.TH DWARFDUMP
.SH NAME
dwarfdump \- dumps DWARF debug information of an ELF object
.SH SYNOPSIS
.B dwarfdump
[-abcdefilmoprsvy] [-t{afv}] [-u\f2objectfile\fP] \f2filename\fP
.SH DESCRIPTION
The 
.B dwarfdump
command prints DWARF sections as requested by specific options.
With no options nothing prints!
.PP
The format is intended to be human readable.
If a script is to parse the output, the
.B \-d
option is useful.
.P
Not all sections actually exist in any given object file.
.P
The format may change from release to release, so it is
unwise to depend too heavily on the format.
.P
.PP
Frame information (.debug_frame and .eh_frame) is heavily
dependent on the ABI/ISA of the object file.  
The '-R' option uses a built-in 'generic' register name set
handling up to 1000 registers named r0-r999.
The '-x abi=<abi>'
flavors below describe how to name an abi and use that to guide
the -f or -F processing.
Without '-R' or '-x abi=<abi>'/ dwarfdump ignores
the dwarfdump.conf file and uses compiled-in MIPS/IRIX 
conventions).  
If no '-x name=<path>' is given, dwarfdump
looks for "./dwarfdump.conf", "$HOME/.dwarfdump.conf", "<install-prefix>/lib/dwarfdump.conf" and takes the first it finds.
If one or more '-x name=<path>' is given the last of these is
used and all other such files ignored.
.PP
The 
.B dwarfdump
command accepts one or more of the following options:
.RS
.TP
.B \-a
Dumps all sections.
Same as 
.B \-bcfilmoprsy
.BR \-tfv .
.TP
.B \-b
Dumps the .debug_abbrev section.  
.TP
.B \-c
Dumps the .debug_loc section.
.TP
.B \-d
Dense mode.  Each die information of the .debug_info section is 
printed in one-line format.  This option does not imply \fB\-i\fP.  
.TP
.B \-e
Ellipsis mode.  Short names for DW_TAG_* and DW_ATTR_* are used 
in the output for the .debug_info section.  
.TP
.B \-f
Dumps the .debug_frame section.
.TP
.B \-i
Dumps the .debug_info section.
.TP
.B \-l
Dumps the .debug_line information.  
.TP
.B \-m
Dumps the .debug_macinfo section.
.TP
.B \-o
Dumps the .reloc_debug_* sections.
.TP
.B \-p
Dumps the .debug_pubnames section.
.TP
.B \-r
Dumps the .debug_aranges section.
.TP
.B \-s
Dumps .debug_string section.
.TP
.B \-ta
Same as 
.B \-tfv.
.TP
.B \-tf
Dumps the .debug_static_funcs section.
.TP
.B \-tv
Dumps the .debug_static_vars section.
.TP
.BI \-u ofile
Restricts the dumping of sections to the named
compilation unit.
.TP
.B \-v
Verbose mode.  Shows more detailed information.  
More detailed information about the .debug_frame section prints if
2 or 3 
.B \-v
options are given.
.TP
.B \-w
Dumps the .debug_weaknames section.
.TP
.B \-x abi=<conf>
where abi=names an abi in dwarfdump.conf (see the
abiname: command in dwarfdump.conf).
.TP
.B \-x name=<conf>
where name=names the full pathname of a dwarfdump configuration
file.  Default install location is /usr/local/lib/dwarfdump.conf.
dwarfdump looks first for local ./dwarfdump.conf, then
for $HOME/.dwarfdump.conf then  for  /usr/local/lib/dwarfdump.conf.
The predefined abi names in dwarfdump.conf are
generic, ia64,  m68k, x86, and x86_64.
.TP
.B \-y
Dumps the .debug_types section.
.SH FILES
dwarfdump
./dwarfdump.conf
$(HOME)/.dwarfdump.conf
<install-prefix>/lib/dwarfdump.conf
.SH NOTES
In some cases compilers use DW_FORM_data1 (for example)
and in such cases the signedness of the value must be taken
from context. Rather than attempt to determine the
context, dwarfdump prints the value with both signednesses
whenever there is ambiguity about the correct interpretation.
For example, 
"DW_AT_const_value           176(as signed = -80)".
For normal DWARF consumers that correctly and fully
evaluate all attributes there is no ambiguity of signedness:
the ambiguity for dwarfdump is due to dwarfdump evaluating
DIEs in a simple order and not keeping track of much context.
.SH BUGS
Support for DWARF3 is being completed but may not be complete.
